home *** CD-ROM | disk | FTP | other *** search
/ MacHack 1997 / MacHack 1997.toast / Presentations / Presentations ’97 / Sessions ’97 / Multiplatform Code⁄Data Sharing / HelloBothWorlds / GE / LibHdr / GEQDWinDIB.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-02-17  |  3.9 KB  |  204 lines  |  [TEXT/CWIE]

  1. /*
  2.     GEQDWinDIB.H
  3.  
  4.     Graphic Elements Windows compatibility module.
  5.  
  6.     Copyright 1997 by Al Evans. All rights reserved.
  7.  
  8.     2/12/97
  9.  
  10.     NOTE:
  11.         
  12.         This version of Graphic Elements for Windows 95 uses the Microsoft
  13.         CreateDIBSection() graphics interface.
  14.  
  15.  
  16. */
  17.  
  18. #ifndef GEQDWIN
  19.  
  20. #define GEQDWIN
  21.  
  22.  
  23.  
  24. #ifdef __cplusplus
  25.  
  26.     extern "C" {
  27.  
  28. #endif
  29.  
  30.  
  31. // Windows utility function to create identity palette
  32.  
  33. HPALETTE Make256IdentityPalette(PALETTEENTRY *colors);
  34. // Analogs of Mac QuickDraw entities and calls for Windows 95 version
  35.  
  36.  
  37. typedef RECT Rect;
  38. typedef HRGN RgnHandle;
  39.  
  40. // Define a Point which can be accessed using either Mac (h, v) or
  41. // Windows 95 (x, y) naming conventions.
  42.  
  43. typedef struct { union { POINT WinPoint;
  44.                          struct { long h; long v; };
  45.                        };
  46.                } Point;
  47.  
  48. typedef enum {v, h} VHSelect;
  49.  
  50. // Can't use equivalent Windows SRCCOPY etc. because we count on copy modes being < 14 bits
  51.  
  52. #define srcCopy     0
  53. #define srcOr       1
  54. #define transparent 2
  55.  
  56. // Mac-compatible text styles
  57.  
  58. #define normal        0
  59. #define bold        1
  60. #define italic        2
  61. #define underline    4
  62. #define outline        8
  63. #define shadow        16
  64. #define condense    32
  65. #define extend        64
  66.  
  67. typedef TEXTMETRIC FontInfo;
  68.  
  69. struct BMInfoWinPalette {
  70.     BITMAPINFOHEADER    bmiHeader;
  71.     USHORT                bmiIndex[256];
  72. };
  73.  
  74. typedef struct BMInfoWinPalette BMInfoWinPalette;
  75.  
  76. struct BitMap {
  77.     BMInfoWinPalette    bmInfo;
  78.     HBITMAP                bmMap;
  79.     void*                bmBits;
  80. };
  81.  
  82. typedef struct BitMap BitMap;
  83.  
  84.  
  85. // Should be changed to take BitMap* !!!!
  86. typedef struct GWorld {
  87.     Rect        portRect;
  88.     HWND        portWindow;    
  89.     BitMap        portBits;
  90. } GWorld, *GWorldPtr;
  91.  
  92. // As used in Graphic Elements, these are all equivalent
  93. typedef GWorldPtr GrafPtr;
  94. typedef GWorldPtr CGrafPtr;
  95.  
  96. // Ugly, but usage is the same
  97. typedef BitMap* PixMapHandle;
  98.  
  99.  
  100. // Mac-compatible RGBColor
  101. typedef struct RGBColor {
  102.     unsigned short red;
  103.     unsigned short green;
  104.     unsigned short blue;
  105. } RGBColor;
  106.  
  107. typedef FOURCC OSType;
  108.  
  109. typedef HWND GDHandle;                // ????
  110. typedef HPALETTE CTabHandle;
  111. typedef long Fixed;
  112.  
  113. typedef long OSErr;                    // ????
  114.  
  115. // Identity palette creation utility
  116. HPALETTE Make256IdentityPalette(PALETTEENTRY *colors);
  117.  
  118.  
  119. OSErr NewGWorld( GWorldPtr *offscreenGWorld,
  120.                  short  offscrnDepth,
  121.                  Rect *boundsRect,
  122.                  CTabHandle worldColors, GDHandle aGDevice, unsigned long flags);
  123.  
  124. void DisposeGWorld(GWorldPtr world);
  125. void DisposCTable(CTabHandle cTable);
  126.  
  127. void GetPort (GrafPtr * savePort);
  128.  
  129. // Get rid of #define in WINSPOOL.H
  130. #ifdef SetPort
  131. #undef SetPort
  132. #endif
  133.  
  134.  
  135. void SetPort (GrafPtr newPort);
  136. void SetOrigin(short h, short v);
  137. void InvalRect(Rect * invalRect); // causes repaint
  138.  
  139.  
  140. #define NewRgn() CreateRectRgn(0,0,1,1)
  141.  
  142. void RectRgn(RgnHandle region, Rect *newRect);
  143. void DisposeRgn(RgnHandle rgn);
  144.  
  145. // Get rid of definition in WINDOWSX.H
  146. #ifdef CopyRgn
  147. #undef CopyRgn
  148. #endif
  149.  
  150. void CopyRgn(RgnHandle source, RgnHandle dest);
  151.  
  152. #define OffsetRgn(r,dh,dv)  OffsetRgn((HRGN)r,dh,dv)
  153.  
  154. void SectRgn(RgnHandle a, RgnHandle b, RgnHandle result);
  155. void DiffRgn(RgnHandle a, RgnHandle b, RgnHandle result);
  156.  
  157. // Get rid of definition in WINDOWSX.H
  158. #ifdef UnionRgn
  159. #undef UnionRgn
  160. #endif
  161.  
  162. void UnionRgn(RgnHandle a, RgnHandle b, RgnHandle result);
  163.  
  164. #define PtInRgn(pt,rgn) PtInRegion((HRGN)rgn,(pt).h,(pt).v)
  165. #define PtInRect(pt,rect)  PtInRect(rect,(pt).WinPoint)
  166.  
  167. void GetGWorld(CGrafPtr *port, GDHandle *gdh);
  168. void SetGWorld(CGrafPtr port, GDHandle gdh);
  169. PixMapHandle GetGWorldPixMap(GWorldPtr world);
  170.  
  171.  
  172. // Used only in TextGE
  173. void ClipRect(Rect *);
  174.  
  175.  
  176. void GlobalToLocal(Point * p);
  177.  
  178. // Irrelevant for Windows 95 version
  179. #define LockPixels(PixMapHandle)            ((Boolean) true)
  180. #define NoPurgePixels(PixMapHandle)
  181. #define UnlockPixels
  182.  
  183. void EraseRect(Rect * r);
  184. void InsetRect( Rect*, short h, short v );
  185.  
  186.  
  187. GE_CALLBACK(void,CopyBits)(const BitMap *srcBits, const BitMap *dstBits,
  188.                         const Rect *srcRect, const Rect *dstRect, short mode, RgnHandle maskRgn);
  189.  
  190. #define FastCopyBits QuickCopyBits
  191.  
  192. #ifdef __cplusplus
  193.  
  194.     }
  195.  
  196. #endif
  197.  
  198.  
  199.  
  200. #endif
  201.  
  202.  
  203.  
  204.